import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Scanner;

public class NavegadorPasta {

	String caminho = "/";

	public void Escolha() throws IOException {
		Scanner e = new Scanner(System.in);
		boolean la = true;
		do {
			getDiretorio(setDiretorio());

			System.out
					.println("Digite o numero da sequencia da pasta que deseja entrar.");
			try {
				int i = e.nextInt();

				if (i != 0) {
					if (i == 1 && !this.caminho.equals("/")) {

						String[] tmp = this.caminho.split("/");
						this.caminho = "";
						int cont = tmp.length - 1;
						for(int ii = 0 ; ii < cont; ii++){
							this.caminho = this.caminho.concat(tmp[ii]+"/");
						}
						System.out.println("Voce esta: "+this.caminho);

					} else {
						String tmp = getDiretorio(setDiretorio()).get(i - 2);
						// caminho = caminho.concat(tmp);
						caminho = caminho.replace(caminho, tmp);
						System.out.println("Escolhido: " + caminho);
						//getDiretorio(setDiretorio());
					}
				} else {
					la = false;
					System.out.println("Saindo!!!");
					System.exit(0);

				}

			} catch (Exception erro) {

				System.out.println("" + erro);

			}
		} while (la);
	}

	public void Apresentacao() {
		System.out.println("Navegador de Pastas");
		System.out
				.println("Escolha sempre 1 para voltar, ou as opção abaixo para entra nas pastas.");
	}

	public DirectoryStream<Path> setDiretorio() throws IOException {
		Path caminho = Paths.get(this.caminho);
		DirectoryStream<Path> stream = Files.newDirectoryStream(caminho);
		return stream;

	}

	public ArrayList<String> getDiretorio(DirectoryStream<Path> d) {
		int i = 2;
		ArrayList<String> pwd = new ArrayList<>();

		for (Path dire : d) {
			System.out.println(i + ":" + dire);
			pwd.add(dire.toString());
			i++;
		}
		return pwd;
	}

	public static void main(String[] args) {
		NavegadorPasta navega = new NavegadorPasta();
		navega.Apresentacao();
		try {
			navega.Escolha();

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
